﻿using System;
namespace Producers.Rr.Xtee.Riik.Ee.Producer.Rr {
    
    
    public partial class RRExtDocumentDataRequest : global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IRRExtDocumentDataRequest {
        
        private RRExtDocumentDataRequest.TegevusType @__tegevus;
        
        private RRExtDocumentDataRequest.IDokumentType @__dokument;
        
        private RRExtDocumentDataRequest.IIsikudType @__isikud;
        
        private RRExtDocumentDataRequest.IElukohtType @__elukoht;
        
        private RRExtDocumentDataRequest.IEestiElukohtType @__eestiElukoht;
        
        private RRExtDocumentDataRequest.ISideandmedType @__sideandmed;
        
        private RRExtDocumentDataRequest.IAvaldajaType @__avaldaja;
        
        public RRExtDocumentDataRequest() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public RRExtDocumentDataRequest(RRExtDocumentDataRequest.TegevusType @tegevus, RRExtDocumentDataRequest.IDokumentType @dokument, RRExtDocumentDataRequest.IIsikudType @isikud, RRExtDocumentDataRequest.IElukohtType @elukoht, RRExtDocumentDataRequest.IEestiElukohtType @eestiElukoht, RRExtDocumentDataRequest.ISideandmedType @sideandmed, RRExtDocumentDataRequest.IAvaldajaType @avaldaja) {
            this.@__tegevus = @tegevus;
            this.@__dokument = @dokument;
            this.@__isikud = @isikud;
            this.@__elukoht = @elukoht;
            this.@__eestiElukoht = @eestiElukoht;
            this.@__sideandmed = @sideandmed;
            this.@__avaldaja = @avaldaja;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected RRExtDocumentDataRequest(IRRExtDocumentDataRequest @rRExtDocumentDataRequest) {
            this.@__tegevus = @rRExtDocumentDataRequest.Tegevus;
            this.@__dokument = @rRExtDocumentDataRequest.Dokument;
            this.@__isikud = @rRExtDocumentDataRequest.Isikud;
            this.@__elukoht = @rRExtDocumentDataRequest.Elukoht;
            this.@__eestiElukoht = @rRExtDocumentDataRequest.EestiElukoht;
            this.@__sideandmed = @rRExtDocumentDataRequest.Sideandmed;
            this.@__avaldaja = @rRExtDocumentDataRequest.Avaldaja;
        }
        
        public virtual RRExtDocumentDataRequest.TegevusType Tegevus {
            get {
                return this.@__tegevus;
            }
            set {
                this.@__tegevus = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.IDokumentType Dokument {
            get {
                return this.@__dokument;
            }
            set {
                this.@__dokument = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.IIsikudType Isikud {
            get {
                return this.@__isikud;
            }
            set {
                this.@__isikud = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.IElukohtType Elukoht {
            get {
                return this.@__elukoht;
            }
            set {
                this.@__elukoht = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.IEestiElukohtType EestiElukoht {
            get {
                return this.@__eestiElukoht;
            }
            set {
                this.@__eestiElukoht = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.ISideandmedType Sideandmed {
            get {
                return this.@__sideandmed;
            }
            set {
                this.@__sideandmed = value;
            }
        }
        
        public virtual RRExtDocumentDataRequest.IAvaldajaType Avaldaja {
            get {
                return this.@__avaldaja;
            }
            set {
                this.@__avaldaja = value;
            }
        }
        
        public partial class DokumentType : IDokumentType {
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__liik;
            
            private string @__dokumendiSeeria;
            
            private string @__dokumendiNumber;
            
            private System.DateTime @__valjaandmiseKP;
            
            private System.DateTime @__joustumiseKP;
            
            private System.DateTime @__kehtivKuniKP;
            
            private System.DateTime? @__kehtetuAlatesKP;
            
            private RRExtDocumentDataRequest.DokumentType.IKoostanudAsutusType @__koostanudAsutus;
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @__ametnikuIsikukood;
            
            private string @__ametnikuNimed;
            
            public DokumentType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public DokumentType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @liik, string @dokumendiSeeria, string @dokumendiNumber, System.DateTime @valjaandmiseKP, System.DateTime @joustumiseKP, System.DateTime @kehtivKuniKP, System.DateTime? @kehtetuAlatesKP, RRExtDocumentDataRequest.DokumentType.IKoostanudAsutusType @koostanudAsutus, global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @ametnikuIsikukood, string @ametnikuNimed) {
                this.@__liik = @liik;
                this.@__dokumendiSeeria = @dokumendiSeeria;
                this.@__dokumendiNumber = @dokumendiNumber;
                this.@__valjaandmiseKP = @valjaandmiseKP;
                this.@__joustumiseKP = @joustumiseKP;
                this.@__kehtivKuniKP = @kehtivKuniKP;
                this.@__kehtetuAlatesKP = @kehtetuAlatesKP;
                this.@__koostanudAsutus = @koostanudAsutus;
                this.@__ametnikuIsikukood = @ametnikuIsikukood;
                this.@__ametnikuNimed = @ametnikuNimed;
            }
            
            /// <summary>
            /// Required parameters
            /// </summary>
            public DokumentType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @liik, string @dokumendiNumber, System.DateTime @valjaandmiseKP, System.DateTime @joustumiseKP, System.DateTime @kehtivKuniKP, RRExtDocumentDataRequest.DokumentType.IKoostanudAsutusType @koostanudAsutus, global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @ametnikuIsikukood, string @ametnikuNimed) {
                this.@__liik = @liik;
                this.@__dokumendiNumber = @dokumendiNumber;
                this.@__valjaandmiseKP = @valjaandmiseKP;
                this.@__joustumiseKP = @joustumiseKP;
                this.@__kehtivKuniKP = @kehtivKuniKP;
                this.@__koostanudAsutus = @koostanudAsutus;
                this.@__ametnikuIsikukood = @ametnikuIsikukood;
                this.@__ametnikuNimed = @ametnikuNimed;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected DokumentType(IDokumentType @dokumentType) {
                this.@__liik = @dokumentType.Liik;
                this.@__dokumendiSeeria = @dokumentType.DokumendiSeeria;
                this.@__dokumendiNumber = @dokumentType.DokumendiNumber;
                this.@__valjaandmiseKP = @dokumentType.ValjaandmiseKP;
                this.@__joustumiseKP = @dokumentType.JoustumiseKP;
                this.@__kehtivKuniKP = @dokumentType.KehtivKuniKP;
                this.@__kehtetuAlatesKP = @dokumentType.KehtetuAlatesKP;
                this.@__koostanudAsutus = @dokumentType.KoostanudAsutus;
                this.@__ametnikuIsikukood = @dokumentType.AmetnikuIsikukood;
                this.@__ametnikuNimed = @dokumentType.AmetnikuNimed;
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Liik {
                get {
                    return this.@__liik;
                }
                set {
                    this.@__liik = value;
                }
            }
            
            public virtual string DokumendiSeeria {
                get {
                    return this.@__dokumendiSeeria;
                }
                set {
                    this.@__dokumendiSeeria = value;
                }
            }
            
            public virtual string DokumendiNumber {
                get {
                    return this.@__dokumendiNumber;
                }
                set {
                    this.@__dokumendiNumber = value;
                }
            }
            
            public virtual System.DateTime ValjaandmiseKP {
                get {
                    return this.@__valjaandmiseKP;
                }
                set {
                    this.@__valjaandmiseKP = value;
                }
            }
            
            public virtual System.DateTime JoustumiseKP {
                get {
                    return this.@__joustumiseKP;
                }
                set {
                    this.@__joustumiseKP = value;
                }
            }
            
            public virtual System.DateTime KehtivKuniKP {
                get {
                    return this.@__kehtivKuniKP;
                }
                set {
                    this.@__kehtivKuniKP = value;
                }
            }
            
            public virtual System.DateTime? KehtetuAlatesKP {
                get {
                    return this.@__kehtetuAlatesKP;
                }
                set {
                    this.@__kehtetuAlatesKP = value;
                }
            }
            
            public virtual RRExtDocumentDataRequest.DokumentType.IKoostanudAsutusType KoostanudAsutus {
                get {
                    return this.@__koostanudAsutus;
                }
                set {
                    this.@__koostanudAsutus = value;
                }
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode AmetnikuIsikukood {
                get {
                    return this.@__ametnikuIsikukood;
                }
                set {
                    this.@__ametnikuIsikukood = value;
                }
            }
            
            public virtual string AmetnikuNimed {
                get {
                    return this.@__ametnikuNimed;
                }
                set {
                    this.@__ametnikuNimed = value;
                }
            }
            
            public partial class KoostanudAsutusType : IKoostanudAsutusType {
                
                private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__riik;
                
                private string @__asutuseRegNumber;
                
                private string @__asutuseKood;
                
                private string @__asutuseNimi;
                
                public KoostanudAsutusType() {
                }
                
                /// <summary>
                /// All parameters
                /// </summary>
                public KoostanudAsutusType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @riik, string @asutuseRegNumber, string @asutuseKood, string @asutuseNimi) {
                    this.@__riik = @riik;
                    this.@__asutuseRegNumber = @asutuseRegNumber;
                    this.@__asutuseKood = @asutuseKood;
                    this.@__asutuseNimi = @asutuseNimi;
                }
                
                /// <summary>
                /// Required parameters
                /// </summary>
                public KoostanudAsutusType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @riik, string @asutuseRegNumber, string @asutuseKood) {
                    this.@__riik = @riik;
                    this.@__asutuseRegNumber = @asutuseRegNumber;
                    this.@__asutuseKood = @asutuseKood;
                }
                
                /// <summary>
                /// Copy Constructor
                /// </summary>
                protected KoostanudAsutusType(IKoostanudAsutusType @koostanudAsutusType) {
                    this.@__riik = @koostanudAsutusType.Riik;
                    this.@__asutuseRegNumber = @koostanudAsutusType.AsutuseRegNumber;
                    this.@__asutuseKood = @koostanudAsutusType.AsutuseKood;
                    this.@__asutuseNimi = @koostanudAsutusType.AsutuseNimi;
                }
                
                public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                    get {
                        return this.@__riik;
                    }
                    set {
                        this.@__riik = value;
                    }
                }
                
                public virtual string AsutuseRegNumber {
                    get {
                        return this.@__asutuseRegNumber;
                    }
                    set {
                        this.@__asutuseRegNumber = value;
                    }
                }
                
                public virtual string AsutuseKood {
                    get {
                        return this.@__asutuseKood;
                    }
                    set {
                        this.@__asutuseKood = value;
                    }
                }
                
                public virtual string AsutuseNimi {
                    get {
                        return this.@__asutuseNimi;
                    }
                    set {
                        this.@__asutuseNimi = value;
                    }
                }
            }
            
            public interface IKoostanudAsutusType {
                
                global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                    get;
                    set;
                }
                
                string AsutuseRegNumber {
                    get;
                    set;
                }
                
                string AsutuseKood {
                    get;
                    set;
                }
                
                string AsutuseNimi {
                    get;
                    set;
                }
            }
        }
        
        public interface IDokumentType {
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Liik {
                get;
                set;
            }
            
            string DokumendiSeeria {
                get;
                set;
            }
            
            string DokumendiNumber {
                get;
                set;
            }
            
            System.DateTime ValjaandmiseKP {
                get;
                set;
            }
            
            System.DateTime JoustumiseKP {
                get;
                set;
            }
            
            System.DateTime KehtivKuniKP {
                get;
                set;
            }
            
            System.DateTime? KehtetuAlatesKP {
                get;
                set;
            }
            
            RRExtDocumentDataRequest.DokumentType.IKoostanudAsutusType KoostanudAsutus {
                get;
                set;
            }
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode AmetnikuIsikukood {
                get;
                set;
            }
            
            string AmetnikuNimed {
                get;
                set;
            }
        }
        
        public partial class IsikudType : IIsikudType {
            
            private System.Collections.Generic.List<RRExtDocumentDataRequest.IsikudType.IIsikType> @__isik = new System.Collections.Generic.List<RRExtDocumentDataRequest.IsikudType.IIsikType>();
            
            public IsikudType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public IsikudType(System.Collections.Generic.List<RRExtDocumentDataRequest.IsikudType.IIsikType> @isik) {
                this.@__isik = @isik;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected IsikudType(IIsikudType @isikudType) {
                this.@__isik = @isikudType.Isik;
            }
            
            public virtual System.Collections.Generic.List<RRExtDocumentDataRequest.IsikudType.IIsikType> Isik {
                get {
                    return this.@__isik;
                }
                set {
                    this.@__isik = value;
                }
            }
            
            public partial class IsikType : IIsikType {
                
                private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @__isikukood;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.IValisriigiIKType @__valisriigiIK;
                
                private string @__eesnimi;
                
                private string @__eesnimiRR;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.IMuudEesnimedType @__muudEesnimed;
                
                private string @__perenimi;
                
                private string @__perenimiRR;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.IMuudPerenimedType @__muudPerenimed;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.IPohiKodakondsusType @__pohiKodakondsus;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.IKodakondsusedType @__kodakondsused;
                
                private RRExtDocumentDataRequest.IsikudType.IsikType.ILisainfoType @__lisainfo;
                
                public IsikType() {
                }
                
                /// <summary>
                /// All parameters
                /// </summary>
                public IsikType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @isikukood, RRExtDocumentDataRequest.IsikudType.IsikType.IValisriigiIKType @valisriigiIK, string @eesnimi, string @eesnimiRR, RRExtDocumentDataRequest.IsikudType.IsikType.IMuudEesnimedType @muudEesnimed, string @perenimi, string @perenimiRR, RRExtDocumentDataRequest.IsikudType.IsikType.IMuudPerenimedType @muudPerenimed, RRExtDocumentDataRequest.IsikudType.IsikType.IPohiKodakondsusType @pohiKodakondsus, RRExtDocumentDataRequest.IsikudType.IsikType.IKodakondsusedType @kodakondsused, RRExtDocumentDataRequest.IsikudType.IsikType.ILisainfoType @lisainfo) {
                    this.@__isikukood = @isikukood;
                    this.@__valisriigiIK = @valisriigiIK;
                    this.@__eesnimi = @eesnimi;
                    this.@__eesnimiRR = @eesnimiRR;
                    this.@__muudEesnimed = @muudEesnimed;
                    this.@__perenimi = @perenimi;
                    this.@__perenimiRR = @perenimiRR;
                    this.@__muudPerenimed = @muudPerenimed;
                    this.@__pohiKodakondsus = @pohiKodakondsus;
                    this.@__kodakondsused = @kodakondsused;
                    this.@__lisainfo = @lisainfo;
                }
                
                /// <summary>
                /// Required parameters
                /// </summary>
                public IsikType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @isikukood, RRExtDocumentDataRequest.IsikudType.IsikType.IValisriigiIKType @valisriigiIK, string @eesnimi, string @eesnimiRR, string @perenimi, string @perenimiRR) {
                    this.@__isikukood = @isikukood;
                    this.@__valisriigiIK = @valisriigiIK;
                    this.@__eesnimi = @eesnimi;
                    this.@__eesnimiRR = @eesnimiRR;
                    this.@__perenimi = @perenimi;
                    this.@__perenimiRR = @perenimiRR;
                }
                
                /// <summary>
                /// Copy Constructor
                /// </summary>
                protected IsikType(IIsikType @isikType) {
                    this.@__isikukood = @isikType.Isikukood;
                    this.@__valisriigiIK = @isikType.ValisriigiIK;
                    this.@__eesnimi = @isikType.Eesnimi;
                    this.@__eesnimiRR = @isikType.EesnimiRR;
                    this.@__muudEesnimed = @isikType.MuudEesnimed;
                    this.@__perenimi = @isikType.Perenimi;
                    this.@__perenimiRR = @isikType.PerenimiRR;
                    this.@__muudPerenimed = @isikType.MuudPerenimed;
                    this.@__pohiKodakondsus = @isikType.PohiKodakondsus;
                    this.@__kodakondsused = @isikType.Kodakondsused;
                    this.@__lisainfo = @isikType.Lisainfo;
                }
                
                public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode Isikukood {
                    get {
                        return this.@__isikukood;
                    }
                    set {
                        this.@__isikukood = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.IValisriigiIKType ValisriigiIK {
                    get {
                        return this.@__valisriigiIK;
                    }
                    set {
                        this.@__valisriigiIK = value;
                    }
                }
                
                public virtual string Eesnimi {
                    get {
                        return this.@__eesnimi;
                    }
                    set {
                        this.@__eesnimi = value;
                    }
                }
                
                public virtual string EesnimiRR {
                    get {
                        return this.@__eesnimiRR;
                    }
                    set {
                        this.@__eesnimiRR = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.IMuudEesnimedType MuudEesnimed {
                    get {
                        return this.@__muudEesnimed;
                    }
                    set {
                        this.@__muudEesnimed = value;
                    }
                }
                
                public virtual string Perenimi {
                    get {
                        return this.@__perenimi;
                    }
                    set {
                        this.@__perenimi = value;
                    }
                }
                
                public virtual string PerenimiRR {
                    get {
                        return this.@__perenimiRR;
                    }
                    set {
                        this.@__perenimiRR = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.IMuudPerenimedType MuudPerenimed {
                    get {
                        return this.@__muudPerenimed;
                    }
                    set {
                        this.@__muudPerenimed = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.IPohiKodakondsusType PohiKodakondsus {
                    get {
                        return this.@__pohiKodakondsus;
                    }
                    set {
                        this.@__pohiKodakondsus = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.IKodakondsusedType Kodakondsused {
                    get {
                        return this.@__kodakondsused;
                    }
                    set {
                        this.@__kodakondsused = value;
                    }
                }
                
                public virtual RRExtDocumentDataRequest.IsikudType.IsikType.ILisainfoType Lisainfo {
                    get {
                        return this.@__lisainfo;
                    }
                    set {
                        this.@__lisainfo = value;
                    }
                }
                
                public partial class ValisriigiIKType : IValisriigiIKType {
                    
                    private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__riik;
                    
                    private string @__valisriigiIK;
                    
                    public ValisriigiIKType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public ValisriigiIKType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @riik, string @valisriigiIK) {
                        this.@__riik = @riik;
                        this.@__valisriigiIK = @valisriigiIK;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected ValisriigiIKType(IValisriigiIKType @valisriigiIKType) {
                        this.@__riik = @valisriigiIKType.Riik;
                        this.@__valisriigiIK = @valisriigiIKType.ValisriigiIK;
                    }
                    
                    public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                        get {
                            return this.@__riik;
                        }
                        set {
                            this.@__riik = value;
                        }
                    }
                    
                    public virtual string ValisriigiIK {
                        get {
                            return this.@__valisriigiIK;
                        }
                        set {
                            this.@__valisriigiIK = value;
                        }
                    }
                }
                
                public interface IValisriigiIKType {
                    
                    global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                        get;
                        set;
                    }
                    
                    string ValisriigiIK {
                        get;
                        set;
                    }
                }
                
                public partial class MuudEesnimedType : IMuudEesnimedType {
                    
                    private string @__muuEesnimi;
                    
                    public MuudEesnimedType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public MuudEesnimedType(string @muuEesnimi) {
                        this.@__muuEesnimi = @muuEesnimi;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected MuudEesnimedType(IMuudEesnimedType @muudEesnimedType) {
                        this.@__muuEesnimi = @muudEesnimedType.MuuEesnimi;
                    }
                    
                    public virtual string MuuEesnimi {
                        get {
                            return this.@__muuEesnimi;
                        }
                        set {
                            this.@__muuEesnimi = value;
                        }
                    }
                }
                
                public interface IMuudEesnimedType {
                    
                    string MuuEesnimi {
                        get;
                        set;
                    }
                }
                
                public partial class MuudPerenimedType : IMuudPerenimedType {
                    
                    private string @__muuPerenimi;
                    
                    public MuudPerenimedType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public MuudPerenimedType(string @muuPerenimi) {
                        this.@__muuPerenimi = @muuPerenimi;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected MuudPerenimedType(IMuudPerenimedType @muudPerenimedType) {
                        this.@__muuPerenimi = @muudPerenimedType.MuuPerenimi;
                    }
                    
                    public virtual string MuuPerenimi {
                        get {
                            return this.@__muuPerenimi;
                        }
                        set {
                            this.@__muuPerenimi = value;
                        }
                    }
                }
                
                public interface IMuudPerenimedType {
                    
                    string MuuPerenimi {
                        get;
                        set;
                    }
                }
                
                public partial class PohiKodakondsusType : IPohiKodakondsusType {
                    
                    private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__riik;
                    
                    public PohiKodakondsusType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public PohiKodakondsusType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @riik) {
                        this.@__riik = @riik;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected PohiKodakondsusType(IPohiKodakondsusType @pohiKodakondsusType) {
                        this.@__riik = @pohiKodakondsusType.Riik;
                    }
                    
                    public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                        get {
                            return this.@__riik;
                        }
                        set {
                            this.@__riik = value;
                        }
                    }
                }
                
                public interface IPohiKodakondsusType {
                    
                    global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Riik {
                        get;
                        set;
                    }
                }
                
                public partial class KodakondsusedType : IKodakondsusedType {
                    
                    private System.Collections.Generic.List<global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif> @__riik = new System.Collections.Generic.List<global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif>();
                    
                    public KodakondsusedType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public KodakondsusedType(System.Collections.Generic.List<global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif> @riik) {
                        this.@__riik = @riik;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected KodakondsusedType(IKodakondsusedType @kodakondsusedType) {
                        this.@__riik = @kodakondsusedType.Riik;
                    }
                    
                    public virtual System.Collections.Generic.List<global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif> Riik {
                        get {
                            return this.@__riik;
                        }
                        set {
                            this.@__riik = value;
                        }
                    }
                }
                
                public interface IKodakondsusedType {
                    
                    System.Collections.Generic.List<global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif> Riik {
                        get;
                        set;
                    }
                }
                
                public partial class LisainfoType : ILisainfoType {
                    
                    private string @__synnikoht;
                    
                    private System.DateTime? @__synniaeg;
                    
                    private string @__sugu;
                    
                    public LisainfoType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public LisainfoType(string @synnikoht, System.DateTime? @synniaeg, string @sugu) {
                        this.@__synnikoht = @synnikoht;
                        this.@__synniaeg = @synniaeg;
                        this.@__sugu = @sugu;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected LisainfoType(ILisainfoType @lisainfoType) {
                        this.@__synnikoht = @lisainfoType.Synnikoht;
                        this.@__synniaeg = @lisainfoType.Synniaeg;
                        this.@__sugu = @lisainfoType.Sugu;
                    }
                    
                    public virtual string Synnikoht {
                        get {
                            return this.@__synnikoht;
                        }
                        set {
                            this.@__synnikoht = value;
                        }
                    }
                    
                    public virtual System.DateTime? Synniaeg {
                        get {
                            return this.@__synniaeg;
                        }
                        set {
                            this.@__synniaeg = value;
                        }
                    }
                    
                    public virtual string Sugu {
                        get {
                            return this.@__sugu;
                        }
                        set {
                            this.@__sugu = value;
                        }
                    }
                }
                
                public interface ILisainfoType {
                    
                    string Synnikoht {
                        get;
                        set;
                    }
                    
                    System.DateTime? Synniaeg {
                        get;
                        set;
                    }
                    
                    string Sugu {
                        get;
                        set;
                    }
                }
            }
            
            public interface IIsikType {
                
                global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode Isikukood {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.IValisriigiIKType ValisriigiIK {
                    get;
                    set;
                }
                
                string Eesnimi {
                    get;
                    set;
                }
                
                string EesnimiRR {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.IMuudEesnimedType MuudEesnimed {
                    get;
                    set;
                }
                
                string Perenimi {
                    get;
                    set;
                }
                
                string PerenimiRR {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.IMuudPerenimedType MuudPerenimed {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.IPohiKodakondsusType PohiKodakondsus {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.IKodakondsusedType Kodakondsused {
                    get;
                    set;
                }
                
                RRExtDocumentDataRequest.IsikudType.IsikType.ILisainfoType Lisainfo {
                    get;
                    set;
                }
            }
        }
        
        public interface IIsikudType {
            
            System.Collections.Generic.List<RRExtDocumentDataRequest.IsikudType.IIsikType> Isik {
                get;
                set;
            }
        }
        
        public partial class ElukohtType : IElukohtType {
            
            private string @__riigiKood;
            
            private string @__tase1;
            
            private string @__tase2;
            
            private string @__tase3;
            
            private string @__tase4;
            
            private string @__tase5;
            
            private string @__tase6;
            
            private string @__tase7;
            
            private string @__tase8;
            
            private string @__postiIndeks;
            
            private System.DateTime? @__algusKP;
            
            public ElukohtType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public ElukohtType(string @riigiKood, string @tase1, string @tase2, string @tase3, string @tase4, string @tase5, string @tase6, string @tase7, string @tase8, string @postiIndeks, System.DateTime? @algusKP) {
                this.@__riigiKood = @riigiKood;
                this.@__tase1 = @tase1;
                this.@__tase2 = @tase2;
                this.@__tase3 = @tase3;
                this.@__tase4 = @tase4;
                this.@__tase5 = @tase5;
                this.@__tase6 = @tase6;
                this.@__tase7 = @tase7;
                this.@__tase8 = @tase8;
                this.@__postiIndeks = @postiIndeks;
                this.@__algusKP = @algusKP;
            }
            
            /// <summary>
            /// Required parameters
            /// </summary>
            public ElukohtType(string @riigiKood) {
                this.@__riigiKood = @riigiKood;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected ElukohtType(IElukohtType @elukohtType) {
                this.@__riigiKood = @elukohtType.RiigiKood;
                this.@__tase1 = @elukohtType.Tase1;
                this.@__tase2 = @elukohtType.Tase2;
                this.@__tase3 = @elukohtType.Tase3;
                this.@__tase4 = @elukohtType.Tase4;
                this.@__tase5 = @elukohtType.Tase5;
                this.@__tase6 = @elukohtType.Tase6;
                this.@__tase7 = @elukohtType.Tase7;
                this.@__tase8 = @elukohtType.Tase8;
                this.@__postiIndeks = @elukohtType.PostiIndeks;
                this.@__algusKP = @elukohtType.AlgusKP;
            }
            
            public virtual string RiigiKood {
                get {
                    return this.@__riigiKood;
                }
                set {
                    this.@__riigiKood = value;
                }
            }
            
            public virtual string Tase1 {
                get {
                    return this.@__tase1;
                }
                set {
                    this.@__tase1 = value;
                }
            }
            
            public virtual string Tase2 {
                get {
                    return this.@__tase2;
                }
                set {
                    this.@__tase2 = value;
                }
            }
            
            public virtual string Tase3 {
                get {
                    return this.@__tase3;
                }
                set {
                    this.@__tase3 = value;
                }
            }
            
            public virtual string Tase4 {
                get {
                    return this.@__tase4;
                }
                set {
                    this.@__tase4 = value;
                }
            }
            
            public virtual string Tase5 {
                get {
                    return this.@__tase5;
                }
                set {
                    this.@__tase5 = value;
                }
            }
            
            public virtual string Tase6 {
                get {
                    return this.@__tase6;
                }
                set {
                    this.@__tase6 = value;
                }
            }
            
            public virtual string Tase7 {
                get {
                    return this.@__tase7;
                }
                set {
                    this.@__tase7 = value;
                }
            }
            
            public virtual string Tase8 {
                get {
                    return this.@__tase8;
                }
                set {
                    this.@__tase8 = value;
                }
            }
            
            public virtual string PostiIndeks {
                get {
                    return this.@__postiIndeks;
                }
                set {
                    this.@__postiIndeks = value;
                }
            }
            
            public virtual System.DateTime? AlgusKP {
                get {
                    return this.@__algusKP;
                }
                set {
                    this.@__algusKP = value;
                }
            }
        }
        
        public interface IElukohtType {
            
            string RiigiKood {
                get;
                set;
            }
            
            string Tase1 {
                get;
                set;
            }
            
            string Tase2 {
                get;
                set;
            }
            
            string Tase3 {
                get;
                set;
            }
            
            string Tase4 {
                get;
                set;
            }
            
            string Tase5 {
                get;
                set;
            }
            
            string Tase6 {
                get;
                set;
            }
            
            string Tase7 {
                get;
                set;
            }
            
            string Tase8 {
                get;
                set;
            }
            
            string PostiIndeks {
                get;
                set;
            }
            
            System.DateTime? AlgusKP {
                get;
                set;
            }
        }
        
        public partial class EestiElukohtType : IEestiElukohtType {
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__tase1;
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__tase2;
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__tase3;
            
            public EestiElukohtType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public EestiElukohtType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @tase1, global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @tase2, global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @tase3) {
                this.@__tase1 = @tase1;
                this.@__tase2 = @tase2;
                this.@__tase3 = @tase3;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected EestiElukohtType(IEestiElukohtType @eestiElukohtType) {
                this.@__tase1 = @eestiElukohtType.Tase1;
                this.@__tase2 = @eestiElukohtType.Tase2;
                this.@__tase3 = @eestiElukohtType.Tase3;
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase1 {
                get {
                    return this.@__tase1;
                }
                set {
                    this.@__tase1 = value;
                }
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase2 {
                get {
                    return this.@__tase2;
                }
                set {
                    this.@__tase2 = value;
                }
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase3 {
                get {
                    return this.@__tase3;
                }
                set {
                    this.@__tase3 = value;
                }
            }
        }
        
        public interface IEestiElukohtType {
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase1 {
                get;
                set;
            }
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase2 {
                get;
                set;
            }
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Tase3 {
                get;
                set;
            }
        }
        
        public partial class SideandmedType : ISideandmedType {
            
            private RRExtDocumentDataRequest.SideandmedType.IKontaktType @__kontakt;
            
            public SideandmedType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public SideandmedType(RRExtDocumentDataRequest.SideandmedType.IKontaktType @kontakt) {
                this.@__kontakt = @kontakt;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected SideandmedType(ISideandmedType @sideandmedType) {
                this.@__kontakt = @sideandmedType.Kontakt;
            }
            
            public virtual RRExtDocumentDataRequest.SideandmedType.IKontaktType Kontakt {
                get {
                    return this.@__kontakt;
                }
                set {
                    this.@__kontakt = value;
                }
            }
            
            public partial class KontaktType : IKontaktType {
                
                private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @__liik;
                
                private string @__kontaktiTekst;
                
                private System.DateTime @__alatesKP;
                
                private System.DateTime? @__kuniKP;
                
                public KontaktType() {
                }
                
                /// <summary>
                /// All parameters
                /// </summary>
                public KontaktType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @liik, string @kontaktiTekst, System.DateTime @alatesKP, System.DateTime? @kuniKP) {
                    this.@__liik = @liik;
                    this.@__kontaktiTekst = @kontaktiTekst;
                    this.@__alatesKP = @alatesKP;
                    this.@__kuniKP = @kuniKP;
                }
                
                /// <summary>
                /// Required parameters
                /// </summary>
                public KontaktType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif @liik, string @kontaktiTekst, System.DateTime @alatesKP) {
                    this.@__liik = @liik;
                    this.@__kontaktiTekst = @kontaktiTekst;
                    this.@__alatesKP = @alatesKP;
                }
                
                /// <summary>
                /// Copy Constructor
                /// </summary>
                protected KontaktType(IKontaktType @kontaktType) {
                    this.@__liik = @kontaktType.Liik;
                    this.@__kontaktiTekst = @kontaktType.KontaktiTekst;
                    this.@__alatesKP = @kontaktType.AlatesKP;
                    this.@__kuniKP = @kontaktType.KuniKP;
                }
                
                public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Liik {
                    get {
                        return this.@__liik;
                    }
                    set {
                        this.@__liik = value;
                    }
                }
                
                public virtual string KontaktiTekst {
                    get {
                        return this.@__kontaktiTekst;
                    }
                    set {
                        this.@__kontaktiTekst = value;
                    }
                }
                
                public virtual System.DateTime AlatesKP {
                    get {
                        return this.@__alatesKP;
                    }
                    set {
                        this.@__alatesKP = value;
                    }
                }
                
                public virtual System.DateTime? KuniKP {
                    get {
                        return this.@__kuniKP;
                    }
                    set {
                        this.@__kuniKP = value;
                    }
                }
            }
            
            public interface IKontaktType {
                
                global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IKodif Liik {
                    get;
                    set;
                }
                
                string KontaktiTekst {
                    get;
                    set;
                }
                
                System.DateTime AlatesKP {
                    get;
                    set;
                }
                
                System.DateTime? KuniKP {
                    get;
                    set;
                }
            }
        }
        
        public interface ISideandmedType {
            
            RRExtDocumentDataRequest.SideandmedType.IKontaktType Kontakt {
                get;
                set;
            }
        }
        
        public partial class AvaldajaType : IAvaldajaType {
            
            private global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @__isikukood;
            
            private string @__eesnimi;
            
            private string @__perenimi;
            
            public AvaldajaType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public AvaldajaType(global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode @isikukood, string @eesnimi, string @perenimi) {
                this.@__isikukood = @isikukood;
                this.@__eesnimi = @eesnimi;
                this.@__perenimi = @perenimi;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected AvaldajaType(IAvaldajaType @avaldajaType) {
                this.@__isikukood = @avaldajaType.Isikukood;
                this.@__eesnimi = @avaldajaType.Eesnimi;
                this.@__perenimi = @avaldajaType.Perenimi;
            }
            
            public virtual global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode Isikukood {
                get {
                    return this.@__isikukood;
                }
                set {
                    this.@__isikukood = value;
                }
            }
            
            public virtual string Eesnimi {
                get {
                    return this.@__eesnimi;
                }
                set {
                    this.@__eesnimi = value;
                }
            }
            
            public virtual string Perenimi {
                get {
                    return this.@__perenimi;
                }
                set {
                    this.@__perenimi = value;
                }
            }
        }
        
        public interface IAvaldajaType {
            
            global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.PersonalCode Isikukood {
                get;
                set;
            }
            
            string Eesnimi {
                get;
                set;
            }
            
            string Perenimi {
                get;
                set;
            }
        }
        
        public class TegevusType : global::Xtee.Core.Schema.XsdString {
            
            public const string V = "V";
            
            public const string K = "K";
            
            public TegevusType(string value) : 
                    base(value) {
                this.Validate();
                string annot = null;
                if (Value == "V") {
                    annot = "V";
                }
                if (Value == "K") {
                    annot = "K";
                }
                if (annot!=null) {
                    this._annotation = annot;
                }
                else {
                    throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
                }
            }
            
            public TegevusType() : 
                    base(string.Empty) {
            }
            
            public static bool TryParse(string value, out TegevusType result) {
                try {
                    result = new TegevusType(value);
                    return true;
                }
                catch (System.Exception ) {
                    result = null;
                    return false;
                }
            }
            
            public static implicit operator String (TegevusType value) {
                return value.Value;
            }
            
            public static implicit operator TegevusType (string value) {
                if (value==null) {
                    return null;
                }
                return new TegevusType(value);
            }
        }
    }
}
